dstFileName=$1
srcFileName=$2
kn=$3
source subject.ini

tail=`echo $dstFileName | awk -F '.' '{print $NF}'`
if [[ $tail =~ ^[0-9]+$ ]]; then
    newFileName=`echo $dstFileName | sed "s/\.$tail$/.$[$tail + 1]/"`
else
    newFileName=$dstFileName".1"
fi

cp $1 $newFileName
# 读取srcFile表头
srcHeader=`cat $2 | iconv -f gbk -t utf-8 | head -n 1`
dstHeader=`cat $1 | iconv -f gbk -t utf-8 | head -n 1`

dstFile=`cat $1 | iconv -f gbk -t utf-8 | cut -d ' ' -f 1- --output-delimiter $'\n'`
srcFile=`cat $2 | iconv -f gbk -t utf-8`
echo $dstHeader
echo $srcHeader
indexDst=()
indexSrc=()
indexGlo=0
indexGloDst=0
for item in `echo $dstHeader | cut -d ',' -f 1- --output-delimiter $'\n'`; do
    # 检查科目$item是否存在于subject.ini
    foundFlagDst=0
    for subjecti in ${subject[*]}; do
        if [ ${item,,} == ${subjecti,,} ]; then
            foundFlagDst=1
            break
        fi
    done
    # 没找到
    if [ $foundFlagDst -eq 0 ]; then
        indexGloDst=$[ $indexGloDst + 1 ]
        continue
    fi
    indexGloSrc=0
    foundFlagSrc=0
    for itemSrc in `echo $srcHeader | cut -d ',' -f 1- --output-delimiter $'\n'`; do
        if [ ${itemSrc,,} == ${item,,} ]; then
            foundFlagSrc=1
            break
        fi
        indexGloSrc=$[ $indexGloSrc + 1 ]
    done
    # 找到了
    if [ $foundFlagSrc -ne 0 ]; then
        indexDst[$indexGlo]=$indexGloDst
        indexSrc[$indexGlo]=$indexGloSrc
        indexGlo=$[ $indexGlo + 1 ]
    fi
    indexGloDst=$[ $indexGloDst + 1 ]
done
echo ${indexDst[*]}
echo ${indexSrc[*]}

# 索引学号
noIndexDst=0
foundFlagDst=0
for item in `echo $dstHeader | cut -d ',' -f 1- --output-delimiter $'\n'`; do
    if [ $item == "学号" ]; then
        foundFlagDst=1
        break
    fi
    noIndexDst=$[ $noIndexDst + 1 ]
done
if [ $foundFlagDst -eq 0 ]; then
    echo 目标表格未找到“学号”字段名，即将退出
    exit 1
fi
noIndexSrc=0
foundFlagSrc=0
for item in `echo $srcHeader | cut -d ',' -f 1- --output-delimiter $'\n'`; do
    if [ $item == "学号" ]; then
        foundFlagSrc=1
        break
    fi
    noIndexSrc=$[ $noIndexSrc + 1 ]
done
if [ $foundFlagDst -eq 0 ]; then
    echo 源表格未找到“学号”字段名，无法索引，即将退出
    exit 1
fi
echo noIndexDst $noIndexDst
echo noIndexSrc $noIndexSrc

# 源文件逐行遍历
for resLine in `cat $2 | iconv -f gbk -t utf-8 | grep -v 姓名 -n`; do
    cp $newFileName "temp"$newFileName
    lineNo=`echo $resLine | cut -d ':' -f 1`
    lineInf=`echo $resLine | cut -d ':' -f 2`
    lineStuNo=`echo $lineInf | cut -d ',' -f $[$noIndexSrc + 1]`
    lineDst=`echo $dstFile | cut -d ' ' -f 1- --output-delimiter $'\n' | grep $lineStuNo`
    # 构造新行
    newLine=""
    indexItemDst=0
    indexGlo=0
    while [ $indexItemDst -lt $[ `echo $lineDst | cut -d ',' -f 1- --output-delimiter $'\n' | awk 'END{print NR}'`] ]; do
        item=`echo $lineDst | cut -d ',' -f $[$indexItemDst + 1]`
        if [ $indexItemDst -ne 0 ]; then
            newLine=$newLine","
        fi
        if [ $indexGlo -lt ${#indexDst[*]} ] && [ $indexItemDst -eq ${indexDst[$indexGlo]} ]; then
            newRes=`echo $resLine | cut -d ',' -f $[${indexSrc[$indexGlo]} + 1]`
            if [ "$newRes" != "" ]; then
                newRes=$( echo "$newRes $kn" | awk '{printf("%.2f",$1*$2)}' )
                if [ "$item" = "" ] || [ $( echo "$item $newRes" | awk '{printf("%d", $1<$2)}' ) -eq 1 ]; then
                    newLine=$newLine$newRes
                else
                    newLine=$newLine$item
                fi
            else
                newLine=$newLine$item
            fi
            indexGlo=$[$indexGlo + 1]
        else
            newLine=$newLine$item
        fi
        indexItemDst=$[$indexItemDst + 1]
    done
    echo $newLine
    newLine=`echo $newLine | iconv -f utf-8 -t gbk`
    sed $lineNo"c"$newLine "temp"$newFileName > newFileName
    rm "temp"$newFileName
done
